//
//  IsKindClassViewController.h
//  ReviewDemo
//
//  Created by 龙 on 2018/3/21.
//  Copyright © 2018年 long. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface IsKindClassViewController : UIViewController

@end
/*
 分析 : isKindOfClass: 与 isMemberOfClass 的区别：
 
 一、先观看起内部实现：
 
 - (BOOL)isKindOf:aClass
 {
     Class cls;
     for (cls = isa; cls; cls = cls->superclass)
     {
         if (cls == (Class)aClass)
         {
            return YES;
         }
     }
     return NO;
 }
 
 - (BOOL)isMemberOf:aClass
 {
    return isa == (Class)aClass;
 }
 
 结论：isKindOfClass： 判断 一个对象的isa 或者 isa 的父类 是否属于 一个类
      isMemberOfClass 判断 一个对象的isa 是否属于一个类
 换个说法：isKindOfClass 判断指定的对象是否是某一个类, 或者是某一个类的子类（说法狭义，不适用于类对象调方法）
        isMemberOfClass 判断指定的对象是否是 当前指定的类的实例（说法狭义，不适用于类对象调方法）
 
 总结一下实例对象，类对象以及元类对象之间的isa指向和继承关系的规则为:
 规则一: 实例对象的isa指向该类，类的isa指向元类(metaClass)
 规则二: 类的superClass指向其父类，如果该类为根类则值为nil
 规则三: 元类的isa指向根元类，如果该元类是根元类则指向自身
 规则四: 元类的superClass指向父元类，若根元类则指向该根类
 

 
 */
